/*
 **********************************************************
 *
 * Programme :	liste.c
 *
 * ecrit par :	BAYRAMOV Matin & IBRAHIMLI Nihat
 *
 * resume 	: 	contient les entetes des fonctions utiles
 * 				pour gerer le menu de l'application
 *
 * date 	:   Mar 4, 2013
 *
 ***********************************************************
 */

#include <stdio.h>
#include <stdlib.h>

#include <time.h>

#include "graphe.h"
#include "hamiltonien.h"

#define GRAPH_CHARGED 0
#define SAISI_ABUSIF -20

#define MENU_CREATION 1
#define MENU_CREATION_ALEATOIRE 2

#define MENU_LECTURE 3
#define MENU_QUITTER 4

#define MENU_MAIN_MENU 10
#define MENU_SECOND_MENU 11
#define MENU_INSERTION_SOMMET 12
#define MENU_SUPPRESSION_SOMMET 13
#define MENU_INSERTION_ARETE 14
#define MENU_SUPPRESSION_ARETE 15
#define MENU_SAUVEGARDER 16

#define MENU_COMPLETE_GRAPH 17
#define MENU_EXACT_TSP_SOLUTION 18
#define MENU_PLUS_PROCHE_VOISIN 19
#define MENU_PLUS_PETIT_DETOUR 20
#define MENU_CALCUL_GRAPH_ARPM 21
#define MENU_CALCUL_CHRISTOFIDES 22

#define MENU_AFFICHER 23

#ifndef MENU_H_
#define MENU_H_

extern int userChoice;
extern Graphe * graph;

// Permet de créer et manipuler un graph.
void menuCreation();

// Permet de lire un graph depuis un fichier
int menuLecture();

// Arret le programe
void menuQuitter();

// Permet d'aller à la menu principale
void menuMainMenu(char *);

// Permet d'aller au deuxième menu
void menuSecondMenu();

// Permet de redicectionner l'utilisateur
int menuRedirect(int userChoice);

// Permet d'inserer un sommet dans un graph
void menuInsertionSommet();

// Permet de supprimer un sommet d'un graph
void menuSuppressionSommet();

// Permet d'inserer une arete dans un graph
void menuInsertionArete();

// Permet de supprimer une arete d'un graph
void menuSuppressionArete();

// Permet de sauvegarder un graph
int menuSauvegarder();

// Affiche le graph
void menuAfficher();

// Libere tout le mémoire utilisé
int menuFreeAllMemory();


// MENU FOR THE SECOND PART

int menuCreationAleatoire();

int menuCompleterGraph();

int menuExactTSPSolution();

int menuPlusProcheVoisin();

int menuPlusPetitDetour();

int menuCalculGraphARPM();

#endif /* MENU_H_ */
